const axios = require('axios');

// 配置
const BASE_URL = 'http://localhost:3000/api';

// 用户登录信息
const loginData = {
  phone: '13800138000', // 替换为实际的手机号
  code: '123456'        // 替换为实际的验证码
};

// 获取JWT token
async function getToken() {
  try {
    console.log('🔐 正在获取JWT token...\n');
    
    // 发送登录请求
    const response = await axios.post(`${BASE_URL}/auth/login`, loginData);
    
    if (response.data && response.data.data && response.data.data.token) {
      const token = response.data.data.token;
      console.log('✅ 登录成功！');
      console.log(`📱 用户: ${response.data.data.user?.nickname || response.data.data.user?.phone || '未知'}`);
      console.log(`👑 VIP状态: ${response.data.data.user?.vipExpiredAt ? 'VIP用户' : '普通用户'}`);
      if (response.data.data.user?.vipExpiredAt) {
        const vipExpiredAt = new Date(response.data.data.user.vipExpiredAt);
        console.log(`📅 VIP到期时间: ${vipExpiredAt.toLocaleString()}`);
        console.log(`⏰ 是否过期: ${vipExpiredAt > new Date() ? '未过期' : '已过期'}`);
      }
      console.log(`💎 当前积分: ${response.data.data.user?.points || 0}`);
      console.log(`🔑 JWT Token: ${token}`);
      
      // 保存token到文件
      const fs = require('fs');
      fs.writeFileSync('token.txt', token);
      console.log('\n💾 Token已保存到 token.txt 文件');
      
      return token;
    } else {
      console.log('❌ 登录响应中没有找到token');
      console.log('响应数据:', JSON.stringify(response.data, null, 2));
      return null;
    }
  } catch (error) {
    console.error('❌ 登录失败:', error.response?.data || error.message);
    
    if (error.response?.status === 400) {
      console.log('💡 提示: 请检查手机号和验证码是否正确');
    } else if (error.response?.status === 404) {
      console.log('💡 提示: 登录接口不存在，请检查API路径');
    }
    
    return null;
  }
}

// 测试token是否有效
async function testToken(token) {
  try {
    console.log('\n🧪 测试token是否有效...\n');
    
    const headers = {
      'Authorization': `Bearer ${token}`,
      'Content-Type': 'application/json'
    };
    
    // 测试获取用户信息
    const userResponse = await axios.get(`${BASE_URL}/auth/profile`, { headers });
    
    if (userResponse.data) {
      console.log('✅ Token有效！用户信息:');
      console.log(`   ID: ${userResponse.data.data?.id}`);
      console.log(`   昵称: ${userResponse.data.data?.nickname}`);
      console.log(`   手机: ${userResponse.data.data?.phone}`);
      console.log(`   积分: ${userResponse.data.data?.points}`);
      console.log(`   VIP到期: ${userResponse.data.data?.vipExpiredAt ? new Date(userResponse.data.data.vipExpiredAt).toLocaleString() : '无'}`);
      
      // 检查VIP状态
      if (userResponse.data.data?.vipExpiredAt) {
        const isVip = new Date(userResponse.data.data.vipExpiredAt) > new Date();
        console.log(`   VIP状态: ${isVip ? '有效' : '已过期'}`);
      }
      
      return true;
    }
  } catch (error) {
    console.error('❌ Token无效:', error.response?.data || error.message);
    return false;
  }
}

// 主函数
async function main() {
  console.log('🚀 开始获取JWT token...\n');
  
  // 1. 获取token
  const token = await getToken();
  
  if (token) {
    console.log('\n' + '='.repeat(60));
    
    // 2. 测试token
    const isValid = await testToken(token);
    
    if (isValid) {
      console.log('\n🎉 成功获取有效token！');
      console.log('\n💡 使用方法:');
      console.log('   1. 复制上面的JWT Token');
      console.log('   2. 在测试脚本中替换 JWT_TOKEN 变量');
      console.log('   3. 或者直接使用 token.txt 文件中的token');
      console.log('\n📝 测试VIP功能:');
      console.log('   - 运行 test_vip_points_display.js 测试VIP积分显示');
      console.log('   - 运行 test_auto_order.js 测试自动创建订单');
    }
  } else {
    console.log('\n❌ 无法获取有效token，请检查登录信息');
  }
}

// 运行主函数
main().catch(console.error); 